home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
emulator
/
zxam spectrum
/
zxam_rexx
/
español
/
listbasic.zxam
< prev
next >
Wrap
Text File
|
1995-07-31
|
2KB
|
94 lines
/* este script saca el listado del BASIC presente en la memoria del */
/* Cpectrum y lo graba como fichero */
/* comprobamos si el emulador está presente */
address command
if ~show(ports,ZXAM_REXX) then do
requestchoice '>nil: title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
exit
end
/* Almacenar el estado inicial del emulador */
running=zxamactrun() /* 1=en marcha */
zxamstop() /* lo paramos */
/* debemos listar el BASIC. primero lo localizamos */
/* dir inicio del BASIC (variable PROG) */
baselist=zxamdpeek(23635)
/* longitud del programa BASIC (con variable VARS) */
endlist=zxamdpeek(23627)
/* calculamos tamaño */
longbasic=endlist-baselist
if longbasic=0 then do
requestchoice '>nil: title "ZXAM Script error..." body "No hay programa BASIC!!" gadgets "AARGH!"'
exit 0
end
/* cogemos toda el area BASIC */
bloquebasic=zxamgetmem(baselist,endlist-baselist)
/* pedimos el nombre y path del fichero */
oldpath=zxamactsavepath()
oldpattern=zxamactpattern()
zxampattern('#?')
nombre=zxamsaverequester('Nombre para listado BASIC...','ram:')
zxamsavepath(oldpath)
zxampattern(oldpattern)
if nombre='' then exit 0 /* pulsado el CANCEL */
if ~open('fichero',nombre,'w') then exit 0
oldname=zxamactname() /* nombre actual */
oldformat=zxamactformat() /* formato actual */
ZXAMEnableAbort() /* activa gadget Abort ARexx */
do forever
/* procesamos la linea */
/* imprimimos numero de linea */
numlinea=c2d(left(bloquebasic,2))
dummy=writech('fichero',' 'numlinea)
zxamnameformat(' Convirtiendo linea 'numlinea,'Espera...')
longline=c2d(reverse(substr(bloquebasic,3,2))) /* fomato invertido Z80 */
do i=5 to 4+longline /* para procesar los caracteres de la linea */
if substr(bloquebasic,i,1)='0e'x then do
i=i+5
iterate
end
dummy=writech('fichero',zxambasictoken(substr(bloquebasic,i,1)))
if zxamreadabort() then do
if oldname='' then
zxamclearnameformat()
else
zxamnameformat(oldname,oldformat)
exit
end
end i
dummy=writech('fichero','0a'x)
bloquebasic=right(bloquebasic,length(bloquebasic)-(longline+4))
if bloquebasic='' then break
end
dummy=close('fichero')
if oldname='' then
zxamclearnameformat()
else
zxamnameformat(oldname,oldformat)
/* dejar el emulador como estaba */
if running=1 then zxamrun()
exit